package com.mhc.haval.manager;

import com.subaru.common.query.PageResult;
import com.mhc.haval.dal.model.FuncDO;
import com.mhc.haval.dal.query.FuncQuery;

import java.util.List;
import java.util.Map;


/**
 * Manager for Func.
 */
public interface FuncManager {
    /**
     * query count by query condition.
     */
    int countByQuery(FuncQuery query);

    int countByQueryMap(Map queryMap);

    /**
     * delete by query condition.
     */
    int deleteByQuery(FuncQuery query);

    /**
     * delete by primary key.
     */
    int deleteByPrimaryKey(FuncDO record);

    /**
     * insert selective.
     */
    long insertSelective(FuncDO record);

    /**
     * select by query condition.
     */
    List<FuncDO> selectByQuery(FuncQuery query);


    /**
     * select by query condition with page.
     */
    PageResult<FuncDO> selectByQueryWithPage(FuncQuery query);

    /**
     * select by primary key.
     */
    FuncDO selectByPrimaryKey(Long id);

    /**
     * select func list by staff id.
     */
    List<FuncDO> selectByStaffId(Long staffId);

    /**
     * select func list by role id.
     */
    List<FuncDO> selectByRoleId(Long roleId);

    List<FuncDO> queryFuncListByCondition(Map queryMap);

    /**
     * update by query condition selective.
     */
    int updateByQuerySelective( FuncDO record,  FuncQuery query);

    /**
     * update by query condition.
     */
    int updateByQuery(FuncDO record, FuncQuery query);

    /**
     * update by primary key selective.
     */
    int updateByPrimaryKeySelective(FuncDO record);
}